package com.cjm.one.model.coupon.vo;

import com.baomidou.mybatisplus.annotation.TableField;
import com.cjm.one.model.coupon.entity.CouponRange;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
@Data
public class CouponInfoVo implements Serializable {
    /**
     * id
     */
    private Long id;

    /**
     * 优惠卷类型 1 现金券 2 折扣
     */
    @Schema(description = "优惠卷类型 1 现金券 2 折扣")
    private Integer couponType;

    /**
     * 优惠卷名字
     */
    @Schema(description = "优惠卷名字")
    private String name;

    /**
     * 金额
     */
    @Schema(description = "金额")
    private BigDecimal amount;

    /**
     * 折扣：取值[1 到 10]
     */
    @Schema(description = "折扣：取值[1 到 10]")
    private BigDecimal discount;

    /**
     * 使用门槛 0->没门槛
     */
    @Schema(description = "使用门槛 0->没门槛")
    private BigDecimal conditionAmount;

    /**
     * 发行数量，0->无限制
     */
    @Schema(description = "发行数量，0->无限制")
    private Integer publishCount;

    /**
     * 每人限领张数，0-不限制 1-限领1张 2-限领2张
     */
    @Schema(description = "每人限领张数，0-不限制 1-限领1张 2-限领2张")
    private Integer perLimit;

    /**
     * 已使用数量
     */
    @Schema(description = "已使用数量")
    private Integer useCount;

    /**
     * 使用范围[1->全场通用；2->指定分类；3->指定商品]
     */
    @Schema(description = "使用范围[1->全场通用；2->指定分类；3->指定商品]")
    private Integer rangeType;

    /**
     * 领取数量
     */
    @Schema(description = "领取数量")
    private Integer receiveCount;

    /**
     * 过期时间
     */
    @Schema(description = "过期时间")
    private LocalDateTime expireTime;

    /**
     * 优惠券描述
     */
    @Schema(description = "优惠券描述")
    private String description;

    /**
     * 开始领取的时间
     */
    @Schema(description = "开始领取的时间")
    private LocalDateTime startTime;

    /**
     * 可以领取的结束时间
     */
    @Schema(description = "可以领取的结束时间")
    private LocalDateTime endTime;

    /**
     * 状态[0-未发布，1-已发布， -1-已过期]
     */
    @Schema(description = "状态[0-未发布，1-已发布， -1-已过期]")
    private Integer status;
    //是否领取 0 未领取，1已领取
    @Schema(description = "是否领取 0 未领取，1已领取")
    private Integer isReceive;

    @Schema(description = "是否已使用 (0-未使用 1-已使用)")
    private Integer isUsed;


    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    private LocalDateTime updateTime;

    @JsonIgnore
    private  Integer version;

    /**
     * 删除标记（0:不可用 1:可用）
     */
    private Integer isDeleted;
    @Schema(description = "范围列表")
    private List<CouponRange> rangeList;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
}

